import {HTTP_REQUEST_URL, CACHE_USERINFO, CACHE_TOKEN, CACHE_EXPIRES_TIME} from './config.js';
import Util from './utils/util.js';


App({
  data: {},
  onShow: function (e) {
    const that = this;

    if (e.query && e.query.share_id && !wx.getStorageSync('shared_id')) {
      wx.setStorageSync('shared_id', e.query.share_id);
    }

    Util.checkIphone().then(res => {//检查是否是iphone x/11等
      that.globalData.isIphoneX = res
      if (that.globalData.isIphoneX) {
        that.globalData.footerPadding = that.globalData.footerPadding + 68
      }
    });

  },

  onError: function (err) {
  },

  // 调用API从本地缓存中获取数据
  onLaunch: function (e) {
    const that = this;

    that.globalData.token = wx.getStorageSync(CACHE_TOKEN);
    let userInfo = wx.getStorageSync(CACHE_USERINFO);
    if (userInfo) {
      that.globalData.userInfo = userInfo ? JSON.parse(userInfo) : "";
    }

    this.globalData.isLog = !!userInfo && Util.checkLogin(that.globalData.token, "", true);
    // 获取导航高度； 导航高度
    wx.getSystemInfo({
      success: (res) => {
        that.globalData.navHeight = res.statusBarHeight * (750 / res.windowWidth) + 97;
        that.globalData.pxToRpx = 750 / res.windowWidth
      }, fail(err) {
      }
    });

    //全局默认分享
    this.onShareAppMessage();
    this.autoUpdate();
  },

  onHide: function () {
  },

  globalData: {
    navHeight: 0,
    pxToRpx: '',
    url: HTTP_REQUEST_URL,
    token: '',
    isLog: false,
    userInfo: {},
    isIphoneX: false,
    footerPadding: 30, //  距离底部位置
    appid: "wx6866d26f1338a39a",
    version: '1.81'
  },

  autoUpdate: function () {
    let _this = this

    if (wx.canIUse('getUpdateManager')) {
      // wx.clearStorageSync()
      // wx.getUpdateManager接口，可以获知是否有新版本的小程序、新版本是否下载好以及应用新版本的能力，会返回一个UpdateManager实例
      const updateManager = wx.getUpdateManager()

      // 检查小程序是否有新版本发布，onCheckForUpdate：当小程序向后台请求完新版本信息，会通知这个版本告知检查结果
      updateManager.onCheckForUpdate(function (res) {
        // 请求完新版本信息的回调
        if (res.hasUpdate) {
          // 检测到新版本，需要更新，给出提示
          wx.showModal({
            title: '更新提示',
            content: '检测到新版本，是否下载新版本并重启小程序',
            success: function (res) {
              if (res.confirm) {
                // 用户确定更新小程序，小程序下载和更新静默进行
                _this.downLoadAndUpdate(updateManager)
              } else if (res.cancel) {
                // 若用户点击了取消按钮，二次弹窗，强制更新，如果用户选择取消后不需要进行任何操作，则以下内容可忽略
                wx.showModal({
                  title: '提示',
                  content:
                    '请您删除当前小程序，到微信 “发现-小程序” 页，重新搜索打开哦~',
                  showCancel: false, // 隐藏取消按钮
                  confirmText: '确认更新', // 只保留更新按钮
                  success: function (res) {
                    if (res.confirm) {
                      // 下载新版本，重启应用
                      _this.downLoadAndUpdate(updateManager)
                    }
                  }
                })
              }
            }
          })
        }
      })
    } else {
      // 在最新版本客户端上体验小程序
      wx.showModal({
        title: '提示',
        content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试'
      })
    }
  },

  // 下载小程序最新版本并重启
  downLoadAndUpdate: function (updateManager) {
    wx.showLoading()
    // 静默下载更新小程序新版本，onUpdateReady：当新版本下载完成回调
    updateManager.onUpdateReady(function () {
      wx.hideLoading()
      // applyUpdate：强制当前小程序应用上新版本并重启
      updateManager.applyUpdate()
    })
    // onUpdateFailed：当新版本下载失败回调
    updateManager.onUpdateFailed(function () {
      // 下载新版本失败
      wx.showModal({
        title: '已经有新版本喽~',
        content: '新版本已经上线了，请删除当前小程序，重新搜索打开'
      })
    })
  },

  getCurrentPathData() {// 获取上一个页面信息
    const paramData = wx.getLaunchOptionsSync();
    const path = paramData.path;
    const query = paramData.query;

    // 不能使用redirectTo跳转到tabbar页，需要判断一下
    let queryString = '';
    for (const i in query) {
      queryString += `&${i}=${query[i]}`;
    }
    if (queryString) {
      queryString = `?${queryString.substring(1)}`;
    }
    const fullUrl = `/${path}${queryString}`;

    return {fullUrl: fullUrl, path: path}
  },


  //全局默认分享
  onShareAppMessage(res, type = 1) {
    const that = this
    wx.onAppRoute(() => {
      const pages = getCurrentPages();//获取加载的页面
      const view = pages[pages.length - 1]; //获取当前页面的对象
      if (!view) return false;//如果不存在页面对象 则返回

      view.onShareAppMessage = () => { //重写分享配置
          return {
            title: "2023公益未来大学生乡村人才训练营学习历程",
            path: "/pages/index/index", //若无path 默认跳转分享页
            imageUrl:  Util.previewCdnImage("/share_img.jpg"), //若无imageUrl 截图当前页面
          }
        }
    })
  },

  onshareMenuMessage() {//右上角菜单分享
    const pages = getCurrentPages();//获取加载的页面
    const view = pages[pages.length - 1]; //获取当前页面的对象
    const path = Util.getCurrentPath();

    return {
      title: '2023公益未来大学生乡村人才训练营学习历程',
      path: "/pages/index/index",//若无path 默认跳转分享页
      imageUrl: this.getShareCommonImg(), //若无imageUrl 截图当前页面
    }
  },


  /*
  * 信息提示 + 跳转
  * @param object opt {title:'提示语',icon:''} | url
  * @param object to_url 跳转url 有5种跳转方式 {tab:1-5,url:跳转地址}
  */
  Tips: function (opt, to_url) {
    return Util.Tips(opt, to_url);
  },

  /*
   * 合并数组
   * @param array list 请求返回数据
   * @param array sp 原始数组
   * @return array
   */
  SplitArray: function (list, sp) {
    return Util.SplitArray(list, sp);
  },

});
